package id.co.flipbox.mvvmstarter.viewmodels;

import android.databinding.BaseObservable;
import android.databinding.ObservableArrayList;
import android.databinding.ObservableBoolean;
import android.databinding.ObservableList;
import android.util.SparseArray;

/**
 * https://segmentfault.com/a/1190000002876984
 * 实现android.databinding.Observable接口的类可以允许附加一个监听器到Bound对象以便监听对象上的所有属性的变化。
 * Created by bukhoriaqid on 11/10/16.
 */

public abstract class BaseViewModel extends BaseObservable {
    private int firstPage = 1;
    //分页页码
    private int page = firstPage;
    //分页每页Item数量
    private int pageSize = 10;
    private final ObservableBoolean hasMore = new ObservableBoolean(false);
    private final ObservableBoolean loadingMore = new ObservableBoolean(false);
    protected final ObservableList<Object> items = new ObservableArrayList<>();
    //特殊的item集合，传入对应的 position位置和 layoutId,把原本默认的item layout 转为 指定的 layout，item数据不是插进 items里面额外的数据，而是原本存在的数据。
    private final SparseArray<Integer> specialViews = new SparseArray<>();
    //正常的item对应的layout
    private int itemLayout;
    private boolean once = false;//控制loading状态只有一次,对于列表的loading概念，就是首次加载数据，其余加载分别是刷新和更多

}
